下面文字是官網裡對於 Pixi.js 特性的說法:
Pixi.js is a 2D webGL renderer with a seamless canvas fallback that enables it to work across all modern browsers both desktop and mobile. Helping Goodboy and hopefully you achieve the big fat goal of “Build once, play everywhere
他們強調因為Pixi.js支援WebGL的關係,使得Pixi.js的效能表現大大超過過往使用svg做網頁遊戲的效能。詳細比較及實驗數據請參見:突破 D3.js 的速度極限 — 2D WebGL 與 PIXI.js
Pixi.js是一個基於Javascript的2D繪圖引擎,主要是做網頁的2D遊戲,可兼容多種瀏覽器(所支援的瀏覽器版本請參見:What browsers are supported?),但即便是不支援WebGL的瀏覽器,PixiJS也可以正常運行,只是效能會變得差很多,因為沒辦法享受到GPU加速的優勢。
由於Pixi.js的主要開發者過去曾經寫過flash,若是曾經開發過flash的developer,在學習pixi.js時,會感到格外親切。
在Pixi.js裡主要的單張圖片使用的class名稱為Sprite
,而動畫則為MovieClip
。其他如addChild()
、removeChildren()
、play()
、gotoAndStop()
、gotoAndPlay()
等API的名稱都與flash的語法十分相近。過往的flash developer很容易便能夠透過IDE裡auto complete的功能去找到想要使用的功能。
Pixi.js只有提供關於使用WebGL的圖像處理API以及動畫控制元件,並不一定要我們遵循特定的方式(如:TypeScript、粒子系統)等去做開發。這也是它一個優點,我們可以很自由的去依據自己專案的需求去選擇我們要使用的配套方案。
Phaser是一個基於Pixi.js去開發的遊戲框架,雖然Phaser是使用較舊版本的PixiJS為基準,並且我們難以自行將其所使用的PixiJS更新到最新版,而新版的PixiJS提供了更多的功能以及更好的效能。
但是Phaser可以讓我們在開發遊戲時更能夠遵循一致的規範,並且它為我們把許多好用的遊戲開發功能都整合進去,例如粒子系統等。
Phaser額外為Pixi添加了下面的內容:
Source:Decide Pixi.js or Phaser
three.js是另一個可以使用WebGL的3D Javascript遊戲引擎。主要與pixiJS不同的是它是一個3D引擎,而pixiJS主要強項則是產生2D的遊戲。ThreeJS可以讓我們用它創建各種三維場景,包括了攝影機、光影、材質等各種對象。
ThreeJS可以與pixiJS做結合,不過由於3D遊戲是由一個攝影機去做投影,因此投影出來的多個物件會在同一層裡。2D的畫面會永遠在3D物件之上(或之下)而無法交疊出現(以同一個Canvas來說)
這裡是一個將PixiJS結合ThreeJS的範例:https://codepen.io/NEWREBEL/pen/OObLyE
這篇介紹的很詳細:[PixiJS – Day-03] 使用 PixiJS 製作的網站,也許並不少